import pygame
from pygame.sprite import Sprite
class Ship(Sprite):
    def __init__(self, ai_settings: '程序的初始设置', screen: '传递的屏幕对象'):
        super(Ship, self).__init__()
        """加载图像，获取其外接矩形并设置放置的位置"""
        self.screen = screen
        self.settings = ai_settings

        # 加载图片并获得当前加载图片的外接矩形
        self.image = pygame.image.load('images/ship.bmp')
        self.rect = self.image.get_rect()
        self.screen_rect = self.screen.get_rect()

        # 设置图片在屏幕中的显示位置
        self.rect.centerx = self.screen_rect.centerx
        self.rect.bottom = self.screen_rect.bottom

        # 将当前的图片位置转换为浮点数存储到center属性中
        self.center = float(self.rect.centerx)

        # 设置一个移动变量为bool类型控制是否飞船的图片可以在按键没有松开的情况下不断移动
        self.moveRight = False  # 向右移动的限制
        self.moveLeft = False  # 想左移动的限制

    def update(self):
        """更新当前飞船的位置"""
        if self.moveRight and self.rect.centerx < self.screen_rect.right:
            # 当前是向右移动且图像的我接矩形的x轴的位置小于当前显示屏幕的外接矩形的最右侧像素值
            self.center += self.settings.ship_speed_factor
        if self.moveLeft and self.rect.centerx > 0:
            # 当前是向左移动且图像的外接矩形的x轴的值不小于0
            self.center -= self.settings.ship_speed_factor
        self.rect.centerx = self.center

    def blitme(self):
        """放置图片的位置"""
        self.screen.blit(self.image, self.rect)

    def center_ship(self):
        """将飞船的位置设置为屏幕的底部正中心"""
        self.center = self.screen_rect.centerx
